#pragma once

#ifndef OR_FILTER
#define OR_FILTER

/*! \file ORFilter.h
	\brief Header file for ORFilter class.
	
	Details.
*/


#include <vector>
#include "boost/shared_ptr.hpp"

#include "AbstractFileFilter.h"

namespace analyzer {

	//! This class is used for checking files by two filters.
	class ORFilter : public AbstractFileFilter
	{
	public:
		/*! \fn ORFilter(boost::shared_ptr<AbstractFileFilter> filter1, boost::shared_ptr<AbstractFileFilter> filter2);
			\brief Constructor of class ORFilter
		*/
		ORFilter(boost::shared_ptr<AbstractFileFilter> filter1, boost::shared_ptr<AbstractFileFilter> filter2);
		/*! \fn virtual ~AbstractFileFilter(void)
			\brief Destructor of class AbstractFileFilter.
		*/
		~ORFilter(void);
		/*! \fn virtual FileMatch acceptFile(std::string fileName)
			\brief This funcion checks the file with both filter given in constructor.
			\param fileName Is the name of file which is checking of acceptable with file filter.
			\return FileMatch object with sets parameters (matched and file type).
		*/
		virtual FileMatch acceptFile(std::string fileName);
	private:

		std::vector<boost::shared_ptr<AbstractFileFilter> > filters;
	};

}

#endif // OR_FILTER